import Vue from "vue";
import Vuex from "vuex";
// 导入user模块
import user from "./modules/user.js";
import cart from "./modules/cart.js";
import order from "./modules/order.js";
Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    // 定义user状态（数据）
    user: {
      name: "zeng8",
      score: 280,
    },
  },
  getters: {
    // 从现有数据计算出新的数据
    // 计算用户的登记100分一个级
    level(state) {
      // String转换为字符串
      // toFixed保留一个小数点
      return (state.user.score / 100).toFixed(1);
    },
  },
  mutations: {
    // 改变数据的唯一方式只能在mutations里面
    // 建议方法名大写，默认一个参数是state
    // 第二参数就是方法调用传入的参数
    SET_SCORE(state, data) {
      state.user.score = data;
    },
  },
  actions: {
    // 所有针对state的异步操作，网络请求放在actions
    // context上下文，理解为$store
    changeScore(context, data) {
      setTimeout(() => {
        context.commit("SET_SCORE", data);
      }, 5000);
    },
  },
  modules: {
    user,
    cart,
    order,
  },
});
// store仓库 ，state状态（数据），getters获取器，
// mutations变异改变，actions动作 ，modules模块1830004618
